﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using OS.Http.Enums;

namespace OS.Http.Models
{
    /// <summary>
    /// 请求实体
    /// </summary>
    public class BaseHttpRequest
    {
        /// <summary>
        /// 请求地址信息
        /// </summary>
        public Uri Uri { get; set; }

        /// <summary>
        /// 如果设置此值，则忽略Uri值
        /// </summary>
        public string AddressUrl { get; set; }

        /// <summary>
        /// 请求方式
        /// </summary>
        public BaseHttpMethod BaseHttpMethod { get; set; }

        /// <summary>
        /// requestMessage设置方法，如果当前的设置不能满足需求，可以通过这里再次设置
        /// </summary>
        public Action<HttpRequestMessage> RequestSet { get; set; }

        /// <summary>
        /// 文件参数列表
        /// </summary>
        public List<FileParameter> FileParameters { get; set; }

        /// <summary>
        /// 是否存在文件
        /// </summary>
        public bool HasFile => FileParameters.Any();

        /// <summary>
        /// 表单参数列表
        /// </summary>
        public List<FormParameter> FormParameters { get; set; }

        /// <summary>
        /// 自定义内容实体，eg:当上传文件时，无法自定义内容
        /// </summary>
        public string CustomBody { get; set; }

        /// <summary>
        /// 超时时间（毫秒）
        /// </summary>
        public int TimeOutMilliSeconds { get; set; }

        /// <summary>
        /// 构造函数
        /// </summary>
        public BaseHttpRequest()
        {
            FormParameters = new List<FormParameter>();
            FileParameters = new List<FileParameter>();
        }
    }
}